﻿namespace CTP.CRM.Core.Helper
{
    public static class ListHelper
    {
        public static List<T> SortWithSpecifiedValuesFirst<T, TField>(this List<T> source, IEnumerable<TField> specifiedValues, Func<T, TField> fieldSelector)
        {
            // 使用HashSet提高查询效率
            HashSet<TField> specifiedSet = new HashSet<TField>(specifiedValues);

            // 使用LINQ将指定的数据选出并排在前面，其他的排在后面
            List<T> sortedList = source.Where(item => specifiedSet.Contains(fieldSelector(item)))
                .Concat(source.Where(item => !specifiedSet.Contains(fieldSelector(item))))
                .ToList();

            return sortedList;
        }
    }
}
